home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / domacnost a kancelar / joomla / Joomla_1.5.4-Stable-Full_Package.exe / plugins / system / backlink.php next >
PHP Script  |  2008-07-06  |  17KB  |  529 lines

  1. <?php
  2.  
  3. /**
  4. * @version        $Id: backlink.php 10381 2008-06-01 03:35:53Z pasamio $
  5. * @package        Joomla
  6. * @copyright    Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
  7. * @license        GNU/GPL, see LICENSE.php
  8. * Joomla! is free software. This version may have been modified pursuant
  9. * to the GNU General Public License, and as distributed it includes or
  10. * is derivative of works licensed under the GNU General Public License or
  11. * other free or open source software licenses.
  12. * See COPYRIGHT.php for copyright notices and details.
  13. */
  14.  
  15. // no direct access
  16. defined('_JEXEC') or die('Restricted access');
  17.  
  18. jimport('joomla.application.menu');
  19. jimport( 'joomla.plugin.plugin' );
  20.  
  21. class plgSystemBacklink extends JPlugin
  22. {
  23.  
  24.     var $_db = null;
  25.  
  26.     /**
  27.      * Constructor
  28.      *
  29.      * For php4 compatability we must not use the __constructor as a constructor for plugins
  30.      * because func_get_args ( void ) returns a copy of all passed arguments NOT references.
  31.      * This causes problems with cross-referencing necessary for the observer design pattern.
  32.      *
  33.      * @access    protected
  34.      * @param    object    $subject The object to observe
  35.      * @param     array   $config  An array that holds the plugin configuration
  36.      * @since    1.0
  37.      */
  38.     function plgSystemBacklink(& $subject, $config)
  39.     {
  40.         $this->_db = JFactory::getDBO();
  41.         parent :: __construct($subject, $config);
  42.     }
  43.  
  44.     function onAfterInitialise()
  45.     {
  46.         global $mainframe;
  47.         if ($mainframe->isAdmin()) {
  48.             return; // Dont run in admin
  49.         }
  50.  
  51.         $sef = $this->params->get('sef', 1);
  52.         $url = $this->params->get('url', 1);
  53.  
  54.         $legacysef = $this->params->get('legacysef', 1);
  55.         if (!$sef && !$url && !$legacysef)
  56.             return; // None of the options enabled, bail!
  57.  
  58.         // Grab the system as early as possible, we're going to terminate it potentially
  59.         // Case 1: Query string match (shouldn't need this but its here anyway)
  60.         if ($url && isset ($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) && strpos($_SERVER['QUERY_STRING'], '&')) {
  61.             $query_string = $_SERVER['QUERY_STRING'];
  62.             $this->_lookup($query_string);
  63.         }
  64.  
  65.         // Case 2: SEF or similar match
  66.         if ($sef && isset ($_SERVER['SCRIPT_NAME']) && isset ($_SERVER['REQUEST_URI'])) {
  67.             $part = str_replace('index.php', '', $_SERVER['SCRIPT_NAME']);
  68.             if($part != '/') {
  69.                 $search = str_replace($part, '', $_SERVER['REQUEST_URI']);
  70.             } else {
  71.                 $search = ltrim($_SERVER['REQUEST_URI'],'/');
  72.             }
  73.             $this->_lookup($search);
  74.         }
  75.         // Case 3: Old school core sef; used to backlink
  76.         // Enable only if:
  77.         // 1: SEF is enabled
  78.         // 2: Legacy SEF Plugin Param is set
  79.         // 3: And there is no backlink
  80.         if ($mainframe->getCfg('sef')
  81.             && $legacysef
  82.             && !strstr($_SERVER['REQUEST_URI'],'nobacklink')
  83.             && !strlen($_SERVER['QUERY_STRING'])) {
  84.             $this->_legacysef();
  85.         }
  86.  
  87.     }
  88.  
  89.     function _lookup($searchstring)
  90.     {
  91.         // return blank strings and just index.php on its own...
  92.         if (!strlen($searchstring) || $searchstring == trim('index.php',' ?')) {
  93.             return;
  94.         }
  95.  
  96.         $sef = $this->params->get('sef', 1);
  97.         $url = $this->params->get('url', 1);
  98.  
  99.         if (!$sef && !$url) {
  100.             return; // Neither option enabled, bail!
  101.         }
  102.  
  103.         $query    = 'SELECT * FROM #__migration_backlinks WHERE ';
  104.         $where    = Array ();
  105.         $search    = $this->_db->Quote( $this->_db->getEscaped( $searchstring, true ).'%', false );
  106.  
  107.         if ($url) {
  108.             $where[] = 'url LIKE ' . $search;
  109.         }
  110.         if ($sef) {
  111.             $where[] = 'sefurl LIKE ' . $search;
  112.         }
  113.  
  114.         $query .= implode(' OR ', $where);
  115.         $this->_db->setQuery($query);
  116.         $results = $this->_db->loadAssocList();
  117.  
  118.         if (count($results)) {
  119.             // Get the first one...
  120.             $this->_redirect($results[0]['itemid'], $results[0]['name'], $results[0]['newurl']);
  121.         }
  122.     }
  123.  
  124.     function _redirect($Itemid, $name, $url = null)
  125.     {
  126.         global $mainframe;
  127.         if (!strlen($url))
  128.         {
  129.             $menu = & JSite :: getMenu();
  130.             $item = $menu->getItem($Itemid);
  131.             //$url = $item->link;
  132.  
  133.             switch ($item->type)
  134.             {
  135.                 case 'url' :
  136.                     if ((strpos($item->link, 'index.php?') !== false) && (strpos($item->link, 'Itemid=') === false)) {
  137.                         $url = $item->link . '&Itemid=' . $item->id;
  138.                     } else {
  139.                         $url = $item->link;
  140.                     }
  141.                     break;
  142.  
  143.                 default :
  144.                     $url = 'index.php?Itemid=' . $item->id;
  145.                     //$url = $item->link . '&Itemid='.$item->id;
  146.                     break;
  147.             }
  148.             $url = JRoute :: _($url);
  149.             //$url = JURI :: base() . $url; // was $surl with third option of below being url and second being surl
  150.             $name = $item->name;
  151.         }
  152.         // Check we're not redirecting to ourselves
  153.         if(!stristr($url,$_SERVER['REQUEST_URI']) && !stristr($url,$_SERVER['SCRIPT_NAME'].'/'.$_SERVER['QUERY_STRING'])) {
  154.             return;
  155.         }
  156.  
  157.         $name = $name ? $name : "Unknown";
  158.  
  159.         header('Location: ' . str_replace('&','&',$url), true, '301'); // redirect and kill of and &
  160.         jexit(JText :: sprintf('"%s" has moved to <a href="%s">%s</a>. Click the link if your browser does not redirect you automatically.', $name, $url, $url));
  161.     }
  162.  
  163.     function _legacysef()
  164.     {
  165.         $mosConfig_absolute_path = JPATH_SITE;
  166.         $mosConfig_live_site = JURI :: base();
  167.         $url_array = explode('/', $_SERVER['REQUEST_URI']);
  168.  
  169.         if (in_array('content', $url_array))
  170.         {
  171.             /**
  172.             * Content
  173.             * http://www.domain.com/$option/$task/$sectionid/$id/$Itemid/$limit/$limitstart
  174.             */
  175.  
  176.             $uri = explode('content/', $_SERVER['REQUEST_URI']);
  177.             $option = 'com_content';
  178.             $_GET['option'] = $option;
  179.             $_REQUEST['option'] = $option;
  180.             $pos = array_search('content', $url_array);
  181.  
  182.             // language hook for content
  183.             $lang = '';
  184.             foreach ($url_array as $key => $value)
  185.             {
  186.                 if (!strcasecmp(substr($value, 0, 5), 'lang,'))
  187.                 {
  188.                     $temp = explode(',', $value);
  189.                     if (isset ($temp[0]) && $temp[0] != '' && isset ($temp[1]) && $temp[1] != '')
  190.                     {
  191.                         $_GET['lang'] = $temp[1];
  192.                         $_REQUEST['lang'] = $temp[1];
  193.                         $lang = $temp[1];
  194.                     }
  195.                     unset ($url_array[$key]);
  196.                 }
  197.             }
  198.  
  199.             if (isset ($url_array[$pos +8]) && $url_array[$pos +8] != '' && in_array('category', $url_array) && (strpos($url_array[$pos +5], 'order,') !== false) && (strpos($url_array[$pos +6], 'filter,') !== false))
  200.             {
  201.                 // $option/$task/$sectionid/$id/$Itemid/$order/$filter/$limit/$limitstart
  202.                 $task = $url_array[$pos +1];
  203.                 $sectionid = $url_array[$pos +2];
  204.                 $id = $url_array[$pos +3];
  205.                 $Itemid = $url_array[$pos +4];
  206.                 $order = str_replace('order,', '', $url_array[$pos +5]);
  207.                 $filter = str_replace('filter,', '', $url_array[$pos +6]);
  208.                 $limit = $url_array[$pos +7];
  209.                 $limitstart = $url_array[$pos +8];
  210.  
  211.                 // pass data onto global variables
  212.                 $_GET['task'] = $task;
  213.                 $_REQUEST['task'] = $task;
  214.                 $_GET['sectionid'] = $sectionid;
  215.                 $_REQUEST['sectionid'] = $sectionid;
  216.                 $_GET['id'] = $id;
  217.                 $_REQUEST['id'] = $id;
  218.                 $_GET['Itemid'] = $Itemid;
  219.                 $_REQUEST['Itemid'] = $Itemid;
  220.                 $_GET['order'] = $order;
  221.                 $_REQUEST['order'] = $order;
  222.                 $_GET['filter'] = $filter;
  223.                 $_REQUEST['filter'] = $filter;
  224.                 $_GET['limit'] = $limit;
  225.                 $_REQUEST['limit'] = $limit;
  226.                 $_GET['limitstart'] = $limitstart;
  227.                 $_REQUEST['limitstart'] = $limitstart;
  228.  
  229.                 $QUERY_STRING = "option=com_content&task=$task§ionid=$sectionid&id=$id&Itemid=$Itemid&order=$order&filter=$filter&limit=$limit&limitstart=$limitstart";
  230.             }
  231.             else if (isset ($url_array[$pos +7]) && $url_array[$pos +7] != '' && $url_array[$pos +5] > 1000 && (in_array('archivecategory', $url_array) || in_array('archivesection', $url_array)))
  232.             {
  233.                 // $option/$task/$id/$limit/$limitstart/year/month/module
  234.                 $task = $url_array[$pos +1];
  235.                 $id = $url_array[$pos +2];
  236.                 $limit = $url_array[$pos +3];
  237.                 $limitstart = $url_array[$pos +4];
  238.                 $year = $url_array[$pos +5];
  239.                 $month = $url_array[$pos +6];
  240.                 $module = $url_array[$pos +7];
  241.  
  242.                 // pass data onto global variables
  243.                 $_GET['task'] = $task;
  244.                 $_REQUEST['task'] = $task;
  245.                 $_GET['id'] = $id;
  246.                 $_REQUEST['id'] = $id;
  247.                 $_GET['limit'] = $limit;
  248.                 $_REQUEST['limit'] = $limit;
  249.                 $_GET['limitstart'] = $limitstart;
  250.                 $_REQUEST['limitstart'] = $limitstart;
  251.                 $_GET['year'] = $year;
  252.                 $_REQUEST['year'] = $year;
  253.                 $_GET['month'] = $month;
  254.                 $_REQUEST['month'] = $month;
  255.                 $_GET['module'] = $module;
  256.                 $_REQUEST['module'] = $module;
  257.  
  258.                 $QUERY_STRING = "option=com_content&task=$task&id=$id&limit=$limit&limitstart=$limitstart&year=$year&month=$month&module=$module";
  259.             }
  260.             else if (isset ($url_array[$pos +7]) && $url_array[$pos +7] != '' && $url_array[$pos +6] > 1000 && (in_array('archivecategory', $url_array) || in_array('archivesection', $url_array)))
  261.             {
  262.                 // $option/$task/$id/$Itemid/$limit/$limitstart/year/month
  263.                 $task = $url_array[$pos +1];
  264.                 $id = $url_array[$pos +2];
  265.                 $Itemid = $url_array[$pos +3];
  266.                 $limit = $url_array[$pos +4];
  267.                 $limitstart = $url_array[$pos +5];
  268.                 $year = $url_array[$pos +6];
  269.                 $month = $url_array[$pos +7];
  270.  
  271.                 // pass data onto global variables
  272.                 $_GET['task'] = $task;
  273.                 $_REQUEST['task'] = $task;
  274.                 $_GET['id'] = $id;
  275.                 $_REQUEST['id'] = $id;
  276.                 $_GET['Itemid'] = $Itemid;
  277.                 $_REQUEST['Itemid'] = $Itemid;
  278.                 $_GET['limit'] = $limit;
  279.                 $_REQUEST['limit'] = $limit;
  280.                 $_GET['limitstart'] = $limitstart;
  281.                 $_REQUEST['limitstart'] = $limitstart;
  282.                 $_GET['year'] = $year;
  283.                 $_REQUEST['year'] = $year;
  284.                 $_GET['month'] = $month;
  285.                 $_REQUEST['month'] = $month;
  286.  
  287.                 $QUERY_STRING = "option=com_content&task=$task&id=$id&Itemid=$Itemid&limit=$limit&limitstart=$limitstart&year=$year&month=$month";
  288.             }
  289.             else if (isset ($url_array[$pos +7]) && $url_array[$pos +7] != '' && in_array('category', $url_array) && (strpos($url_array[$pos +5], 'order,') !== false))
  290.             {
  291.                 // $option/$task/$sectionid/$id/$Itemid/$order/$limit/$limitstart
  292.                 $task = $url_array[$pos +1];
  293.                 $sectionid = $url_array[$pos +2];
  294.                 $id = $url_array[$pos +3];
  295.                 $Itemid = $url_array[$pos +4];
  296.                 $order = str_replace('order,', '', $url_array[$pos +5]);
  297.                 $limit = $url_array[$pos +6];
  298.                 $limitstart = $url_array[$pos +7];
  299.  
  300.                 // pass data onto global variables
  301.                 $_GET['task'] = $task;
  302.                 $_REQUEST['task'] = $task;
  303.                 $_GET['sectionid'] = $sectionid;
  304.                 $_REQUEST['sectionid'] = $sectionid;
  305.                 $_GET['id'] = $id;
  306.                 $_REQUEST['id'] = $id;
  307.                 $_GET['Itemid'] = $Itemid;
  308.                 $_REQUEST['Itemid'] = $Itemid;
  309.                 $_GET['order'] = $order;
  310.                 $_REQUEST['order'] = $order;
  311.                 $_GET['limit'] = $limit;
  312.                 $_REQUEST['limit'] = $limit;
  313.                 $_GET['limitstart'] = $limitstart;
  314.                 $_REQUEST['limitstart'] = $limitstart;
  315.  
  316.                 $QUERY_STRING = "option=com_content&task=$task§ionid=$sectionid&id=$id&Itemid=$Itemid&order=$order&limit=$limit&limitstart=$limitstart";
  317.             }
  318.             else if (isset ($url_array[$pos +6]) && $url_array[$pos +6] != '')
  319.             {
  320.                 // $option/$task/$sectionid/$id/$Itemid/$limit/$limitstart
  321.                 $task = $url_array[$pos +1];
  322.                 $sectionid = $url_array[$pos +2];
  323.                 $id = $url_array[$pos +3];
  324.                 $Itemid = $url_array[$pos +4];
  325.                 $limit = $url_array[$pos +5];
  326.                 $limitstart = $url_array[$pos +6];
  327.  
  328.                 // pass data onto global variables
  329.                 $_GET['task'] = $task;
  330.                 $_REQUEST['task'] = $task;
  331.                 $_GET['sectionid'] = $sectionid;
  332.                 $_REQUEST['sectionid'] = $sectionid;
  333.                 $_GET['id'] = $id;
  334.                 $_REQUEST['id'] = $id;
  335.                 $_GET['Itemid'] = $Itemid;
  336.                 $_REQUEST['Itemid'] = $Itemid;
  337.                 $_GET['limit'] = $limit;
  338.                 $_REQUEST['limit'] = $limit;
  339.                 $_GET['limitstart'] = $limitstart;
  340.                 $_REQUEST['limitstart'] = $limitstart;
  341.  
  342.                 $QUERY_STRING = "option=com_content&task=$task§ionid=$sectionid&id=$id&Itemid=$Itemid&limit=$limit&limitstart=$limitstart";
  343.             }
  344.             else if (isset ($url_array[$pos +5]) && $url_array[$pos +5] != '')
  345.             {
  346.                 // $option/$task/$id/$Itemid/$limit/$limitstart
  347.                 $task = $url_array[$pos +1];
  348.                 $id = $url_array[$pos +2];
  349.                 $Itemid = $url_array[$pos +3];
  350.                 $limit = $url_array[$pos +4];
  351.                 $limitstart = $url_array[$pos +5];
  352.  
  353.                 // pass data onto global variables
  354.                 $_GET['task'] = $task;
  355.                 $_REQUEST['task'] = $task;
  356.                 $_GET['id'] = $id;
  357.                 $_REQUEST['id'] = $id;
  358.                 $_GET['Itemid'] = $Itemid;
  359.                 $_REQUEST['Itemid'] = $Itemid;
  360.                 $_GET['limit'] = $limit;
  361.                 $_REQUEST['limit'] = $limit;
  362.                 $_GET['limitstart'] = $limitstart;
  363.                 $_REQUEST['limitstart'] = $limitstart;
  364.  
  365.                 $QUERY_STRING = "option=com_content&task=$task&id=$id&Itemid=$Itemid&limit=$limit&limitstart=$limitstart";
  366.             }
  367.             else if (isset ($url_array[$pos +4]) && $url_array[$pos +4] != '' && (in_array('archivecategory', $url_array) || in_array('archivesection', $url_array)))
  368.             {
  369.                 // $option/$task/$year/$month/$module
  370.                 $task = $url_array[$pos +1];
  371.                 $year = $url_array[$pos +2];
  372.                 $month = $url_array[$pos +3];
  373.                 $module = $url_array[$pos +4];
  374.  
  375.                 // pass data onto global variables
  376.                 $_GET['task'] = $task;
  377.                 $_REQUEST['task'] = $task;
  378.                 $_GET['year'] = $year;
  379.                 $_REQUEST['year'] = $year;
  380.                 $_GET['month'] = $month;
  381.                 $_REQUEST['month'] = $month;
  382.                 $_GET['module'] = $module;
  383.                 $_REQUEST['module'] = $module;
  384.  
  385.                 $QUERY_STRING = "option=com_content&task=$task&year=$year&month=$month&module=$module";
  386.             }
  387.             else if (!(isset ($url_array[$pos +5]) && $url_array[$pos +5] != '') && isset ($url_array[$pos +4]) && $url_array[$pos +4] != '')
  388.             {
  389.                 // $option/$task/$sectionid/$id/$Itemid
  390.                 $task = $url_array[$pos +1];
  391.                 $sectionid = $url_array[$pos +2];
  392.                 $id = $url_array[$pos +3];
  393.                 $Itemid = $url_array[$pos +4];
  394.  
  395.                 // pass data onto global variables
  396.                 $_GET['task'] = $task;
  397.                 $_REQUEST['task'] = $task;
  398.                 $_GET['sectionid'] = $sectionid;
  399.                 $_REQUEST['sectionid'] = $sectionid;
  400.                 $_GET['id'] = $id;
  401.                 $_REQUEST['id'] = $id;
  402.                 $_GET['Itemid'] = $Itemid;
  403.                 $_REQUEST['Itemid'] = $Itemid;
  404.  
  405.                 $QUERY_STRING = "option=com_content&task=$task§ionid=$sectionid&id=$id&Itemid=$Itemid";
  406.             }
  407.             else if (!(isset ($url_array[$pos +4]) && $url_array[$pos +4] != '') && (isset ($url_array[$pos +3]) && $url_array[$pos +3] != ''))
  408.             {
  409.                 // $option/$task/$id/$Itemid
  410.                 $task = $url_array[$pos +1];
  411.                 $id = $url_array[$pos +2];
  412.                 $Itemid = $url_array[$pos +3];
  413.  
  414.                 // pass data onto global variables
  415.                 $_GET['task'] = $task;
  416.                 $_REQUEST['task'] = $task;
  417.                 $_GET['id'] = $id;
  418.                 $_REQUEST['id'] = $id;
  419.                 $_GET['Itemid'] = $Itemid;
  420.                 $_REQUEST['Itemid'] = $Itemid;
  421.  
  422.                 $QUERY_STRING = "option=com_content&task=$task&id=$id&Itemid=$Itemid";
  423.             }
  424.             else if (!(isset ($url_array[$pos +3]) && $url_array[$pos +3] != '') && (isset ($url_array[$pos +2]) && $url_array[$pos +2] != ''))
  425.             {
  426.                 // $option/$task/$id
  427.                 $task = $url_array[$pos +1];
  428.                 $id = $url_array[$pos +2];
  429.  
  430.                 // pass data onto global variables
  431.                 $_GET['task'] = $task;
  432.                 $_REQUEST['task'] = $task;
  433.                 $_GET['id'] = $id;
  434.                 $_REQUEST['id'] = $id;
  435.  
  436.                 $QUERY_STRING = "option=com_content&task=$task&id=$id";
  437.             }
  438.             else if (!(isset ($url_array[$pos +2]) && $url_array[$pos +2] != '') && (isset ($url_array[$pos +1]) && $url_array[$pos +1] != ''))
  439.             {
  440.                 // $option/$task
  441.                 $task = $url_array[$pos +1];
  442.  
  443.                 $_GET['task'] = $task;
  444.                 $_REQUEST['task'] = $task;
  445.  
  446.                 $QUERY_STRING = 'option=com_content&task=' . $task;
  447.             }
  448.  
  449.             if ($lang != '') {
  450.                 $QUERY_STRING .= '&lang=' . $lang;
  451.             }
  452.  
  453.             $_SERVER['QUERY_STRING'] = $QUERY_STRING;
  454.             $REQUEST_URI = $uri[0] . 'index.php?' . $QUERY_STRING;
  455.             $_SERVER['REQUEST_URI'] = $REQUEST_URI;
  456.  
  457.         }
  458.         else if (in_array('component', $url_array))
  459.         {
  460.             $name = 'component';
  461.             /*
  462.             Components
  463.             http://www.domain.com/component/$name,$value
  464.             */
  465.             $uri = explode('component/', $_SERVER['REQUEST_URI']);
  466.             $uri_array = explode('/', $uri[1]);
  467.             $QUERY_STRING = '';
  468.  
  469.             // needed for check if component exists
  470.             $path = $mosConfig_absolute_path . '/components';
  471.             $dirlist = array ();
  472.             if (is_dir($path))
  473.             {
  474.                 $base = opendir($path);
  475.                 while (false !== ($dir = readdir($base)))
  476.                 {
  477.                     if ($dir !== '.' && $dir !== '..' && is_dir($path . '/' . $dir) && strtolower($dir) !== 'cvs' && strtolower($dir) !== '.svn') {
  478.                         $dirlist[] = $dir;
  479.                     }
  480.                 }
  481.                 closedir($base);
  482.             }
  483.  
  484.             foreach ($uri_array as $value)
  485.             {
  486.                 $temp = explode(',', $value);
  487.                 if (isset ($temp[0]) && $temp[0] != '' && isset ($temp[1]) && $temp[1] != '')
  488.                 {
  489.                     $_GET[$temp[0]] = $temp[1];
  490.                     $_REQUEST[$temp[0]] = $temp[1];
  491.  
  492.                     // check to ensure component actually exists
  493.                     if ($temp[0] == 'option')
  494.                     {
  495.                         $check = '';
  496.                         if (count($dirlist)) {
  497.                             foreach ($dirlist as $dir) {
  498.                                 if ($temp[1] == $dir) {
  499.                                     $check = 1;
  500.                                     break;
  501.                                 }
  502.                             }
  503.                         }
  504.                         // redirect to 404 page if no component found to match url
  505.                         if (!$check)
  506.                         {
  507.                             header('HTTP/1.0 404 Not Found');
  508.                             require_once ($mosConfig_absolute_path . '/templates/404.php');
  509.                             exit (404);
  510.                         }
  511.                     }
  512.  
  513.                     if ($QUERY_STRING == '') {
  514.                         $QUERY_STRING .= "$temp[0]=$temp[1]";
  515.                     } else {
  516.                         $QUERY_STRING .= "&$temp[0]=$temp[1]";
  517.                     }
  518.                 }
  519.             }
  520.  
  521.             $_SERVER['QUERY_STRING'] = $QUERY_STRING;
  522.             $REQUEST_URI = $uri[0] . 'index.php?' . $QUERY_STRING;
  523.             $_SERVER['REQUEST_URI'] = $REQUEST_URI;
  524.  
  525.         }
  526.         // let this go through and the rest of the system should handle it properly
  527.     }
  528.  
  529. }